#include "../config.h"
#include <glib.h>
#include <sys/types.h>
#include <unistd.h>
#include "inotify-missing.h"
#include "inotify-path.h"
#include "inotify-diag.h"

#define DIAG_DUMP_TIME 20000 /* 20 seconds */
G_LOCK_EXTERN( inotify_lock );

gboolean id_dump( gpointer userdata ) {
  G_LOCK( inotify_lock );
  GIOChannel *ioc = NULL;
  pid_t pid = getpid();
  char *fname = g_strdup_printf( "/tmp/gvfsid.%d", pid );
  ioc = g_io_channel_new_file( fname, "w", NULL );
  g_free( fname );
  if( !ioc ) {
    G_UNLOCK( inotify_lock );
    return TRUE;
  }
  im_diag_dump( ioc );
  g_io_channel_shutdown( ioc, TRUE, NULL );
  g_io_channel_unref( ioc );
  G_UNLOCK( inotify_lock );
  return TRUE;
}

void id_startup() {
  if( !g_getenv( "GNOME_VFS_INOTIFY_DIAG" ) ) {
    return;
  }
  g_timeout_add( DIAG_DUMP_TIME, id_dump, NULL );
}
